package com.heatup.apt.api.service;

import java.math.BigDecimal;

import com.heatup.apt.model.api.ApiResultModel;
import com.heatup.apt.model.user.UserDiscount;
import com.heatup.apt.model.user.UserInfo;

/**
 * 微信支付接口定义
 * <P>File name : WeChatPayService.java </P>
 * <P>Author : fangxiaowen </P> 
 * <P>Date : 2016年8月24日 </P>
 */
public interface WeChatPayService {
	

	
	/**
	 * 修改订单付款状态
	 * WeChatPayService.updatePayOrder()<BR>
	 * <P>Author :  fangxiaowen </P>  
	 * <P>Date : 2016年8月26日 </P>
     * @param orderId 订单号
     * @param tradeNo 支付流水号
     */
	public boolean updatePayOrder(String orderId, String tradeNo);
	
	
	/**
	 * 修改订单付款状态为付款中
	 * WeChatPayService.updatePayStatus()<BR>
	 * <P>Author :  fangxiaowen </P>  
	 * <P>Date : 2016年10月24日 </P>
	 * @param orderId 订单ID
	 * @return
	 */
	public ApiResultModel updatePayStatus(String orderId);
	
	
	public UserDiscount getUserDiscount(int id);

	public ApiResultModel createPayOrderRestructure(UserInfo userInfo, final String payAmount, final String orderType,
			final String serviceId, final String personCount, final String apbillCreateIp, Integer storeId,
			String startTime, String endTime, int duration, int courseCount, Integer couponDetailId, Integer payType,
			String weixinAmt, String consumeAmt, Integer productId, String priceTypeCode, String companyAmt,
			String courseAttr, Integer coachId, Integer mealCount, Integer mealCouponCount, Integer dataDictId) throws Exception;

	/**
	 * 创建订单支付日志信息
	 */
	public void createPayLogs(int userId,String serviceType,String logs);
	
	/**
	 * 创建下线购买 餐券的接口
	 * @param adminMealUserInfo		销餐的管理员			
	 * @param userId				购买餐券的用户
	 * @param orderType				订单类型 餐券
	 * @param payType				支付类型 
	 * @param payAmount				支付金额
	 * @param mealCount				餐券数量
	 * @param couponDetailId		优惠券Id
	 * @return
	 */
	public ApiResultModel createPayMealOrder(UserInfo adminMealUserInfo, Integer userId, String orderType,
			String payType, BigDecimal payAmount, Integer mealCount, String couponDetailId) throws Exception;
	
	//储值卡插入消费记录
	public void insertUserAccountConsume(UserInfo userInfo, String orderNumber);

}
